package file

import (
	"bufio"
	"fmt"
	"io"
	"os"
)

// 缓冲区读
func BufioRead() {
	// O_RDONLY 只读
	file, err := os.OpenFile("demo.txt", os.O_RDONLY, 0666)
	if err != nil {
		fmt.Println(err.Error(), "打开文件失败")
		return
	}
	defer file.Close()
	reader := bufio.NewReader(file)
	for {
		line, _, err := reader.ReadLine()
		if err == io.EOF {
			break
		}
		if err != nil {
			return
		}
		fmt.Println(string(line))
	}
}

// 缓冲区写
func BufioWrite() {
	// O_CREATE  创建文件，文件不存在创建
	// O_WRONLY  只写，文件存在首行写入
	// os.O_WRONLY|os.O_APPEND 只写，尾部追加
	// O_TRUNC	 清空文件内容
	file, err := os.OpenFile("demo.txt", os.O_WRONLY|os.O_APPEND|os.O_CREATE, 0666)
	if err != nil {
		fmt.Println(err.Error())
		return
	}
	defer file.Close()
	writer := bufio.NewWriter(file)
	for i := 0; i < 10; i++ {
		_, _ = writer.WriteString("hello\n")
	}
	// 刷新缓冲区
	_ = writer.Flush()

}
